Computer aided manufacturing (CAM) software systems are used to program computer numerical control (CNC) machine tools that are used in machine shops for the production of discrete parts such as molds, dies, tools, prototypes, aerospace components and more. There is an increasing trend in the modern machine shop to apply simultaneous five-axis machine tools that are capable of 3-axis linear (X, Y, Z) movements in combination with 2-axis (A, B) rotational movements. In this type of machine, during the machining process, the cutting tool and the workpiece are moved simultaneously in five-axes relative to each other as described by a CNC program.
Generating a CNC program to control the movements of these five-axis machine tools—one that fully exercises all five axes—is challenging because such application present complexities that may be both mathematical and technological in nature. A CAM system for programming five-axis machine tools should be easy for the user to operate and should produce error-free CNC programs. Any small error in the CNC program will result in expensive and/or irreparable damage to the workpiece, cutting tools and/or the machine tool itself. When executed, the state of the art five-axis CAM software contains a number of specific machining cycles where, in an effort to make the machining cycle understandable for the user, each cycle contains a smaller number of options. That is, the current state-of-the-art in five-axis CAM software provides the user a machining cycle which is comprised of a single, or a small number, of patterns with a single, or a small number of, orientations. Each combination of pattern and orientation is commonly presented as a new machining cycle. The limited number of options results in those machining cycles being inflexible, due to the limited number of uses. In addition, the number of specific machining cycles results in the duplication of the detailed steps of execution of each independent machining cycle in order to cover the wide variety of machining needed. From the point of view of the embodied CAM steps, the proliferation of machining cycles, often with overlapping requirements, exponentially increases the effort to embody the steps and maintain both the internal steps for execution via machine-readable code and the user interface. The volume of internal steps and maintenance thereof can work to strain the reliability of CAM steps.